import {loadNamespaceOptions} from "../../namespace/api/EntityApi.js";
import {loadDatasourceOptions} from "../../datasource/api/EntityApi.js";

const tableColumns = [
    {
        "key": "namespace",
        "label": "命名空间",
        "type": "string",
        "default": null,
    },
    {
        "key": "categoryLabel",
        "label": "分类标签",
        "type": "string",
        "default": null
    },
    {
        "key": "type",
        "label": "类型",
        "type": "enum",
        "default": null,
        "options": [
            {"value": "SQL", "label": "SQL"},
            {"value": "JAVA", "label": "JAVA"}
        ]
    },
    {
        "key": "name",
        "label": "名称",
        "type": "string",
        "default": null
    },
    {
        "key": "description",
        "label": "描述",
        "type": "string",
        "default": null
    },
    {
        "key": "datasource",
        "label": "数据源",
        "type": "string",
        "default": null
    },
    {
        "key": "cacheMinute",
        "label": "缓存时间(分钟)",
        "type": "number",
        "default": 0
    },
    {
        "key": "page",
        "label": "是否分页",
        "type": "enum",
        "default": "false",
        "options": [
            {"value": false, "label": "false"},
            {"value": true, "label": "true"}
        ]
    }
];

const createFormItems = [
    {
        "key": "namespace",
        "label": "命名空间",
        "type": "enum",
        "default": null,
        "placeholder": "请输入命名空间",
        "options": await loadNamespaceOptions(),
        "required": true,
        "message": "请输入命名空间"
    },
    {
        "key": "datasource",
        "label": "数据源",
        "type": "enum",
        "default": null,
        "placeholder": "请输入数据源",
        "options": await loadDatasourceOptions(),
        "required": true,
        "message": "请输入数据源"
    },
    {
        "key": "categoryLabel",
        "label": "分类标签",
        "type": "string",
        "default": null,
        "placeholder": "请输入分类标签",
        "required": true,
        "message": "请输入分类标签"
    },
    {
        "key": "type",
        "label": "类型",
        "type": "enum",
        "default": null,
        "placeholder": "类型",
        "options": [
            {"value": "SQL", "label": "SQL"},
            {"value": "JAVA", "label": "JAVA"}
        ],
        "required": true,
        "message": "请输入类型"
    },
    {
        "key": "name",
        "label": "名称",
        "type": "string",
        "default": null,
        "placeholder": "请输入名称",
        "required": true,
        "message": "请输入名称"
    },
    {
        "key": "description",
        "label": "描述",
        "type": "string",
        "default": null,
        "placeholder": "请输入描述",
        "required": true,
        "message": "请输入描述"
    },
    {
        "key": "cacheMinute",
        "label": "缓存时间",
        "type": "number",
        "default": 0,
        "placeholder": "请输入缓存时间(分钟)",
        "required": false,
        "message": "请输入缓存时间(分钟)"
    },
    {
        "key": "page",
        "label": "是否分页",
        "type": "enum",
        "default": "false",
        "placeholder": "类型",
        "options": [
            {"value": false, "label": "false"},
            {"value": true, "label": "true"}
        ],
        "required": true,
        "message": "请选择是否分页"
    },
    {
        "key": "executeStr",
        "label": "执行语句",
        "type": "textarea",
        "default": null,
        "placeholder": "请输入执行语句",
        "required": true,
        "message": "请输入执行语句"
    },
];

const updateFormItems = [
    {
        "key": "namespace",
        "label": "命名空间",
        "type": "string",
        "default": null,
        "placeholder": "请输入命名空间",
        "required": true,
        "message": "请输入命名空间"
    },
    {
        "key": "datasource",
        "label": "数据源",
        "type": "string",
        "default": null,
        "placeholder": "请输入数据源",
        "required": true,
        "message": "请输入数据源"
    },
    {
        "key": "categoryLabel",
        "label": "分类标签",
        "type": "string",
        "default": null,
        "placeholder": "请输入分类标签",
        "required": true,
        "message": "请输入分类标签"
    },
    {
        "key": "type",
        "label": "类型",
        "type": "enum",
        "default": null,
        "placeholder": "类型",
        "options": [
            {"value": "SQL", "label": "SQL"},
            {"value": "JAVA", "label": "JAVA"}
        ],
        "required": true,
        "message": "请输入类型"
    },
    {
        "key": "name",
        "label": "名称",
        "type": "string",
        "default": null,
        "placeholder": "请输入名称",
        "required": true,
        "message": "请输入名称"
    },
    {
        "key": "description",
        "label": "描述",
        "type": "string",
        "default": null,
        "placeholder": "请输入描述",
        "required": true,
        "message": "请输入描述"
    },
    {
        "key": "cacheMinute",
        "label": "缓存时间",
        "type": "number",
        "default": 0,
        "placeholder": "请输入缓存时间(分钟)",
        "required": false,
        "message": "请输入缓存时间(分钟)"
    },
    {
        "key": "page",
        "label": "是否分页",
        "type": "enum",
        "default": "false",
        "placeholder": "类型",
        "options": [
            {"value": false, "label": "false"},
            {"value": true, "label": "true"}
        ],
        "required": true,
        "message": "请选择是否分页"
    },
    {
        "key": "executeStr",
        "label": "执行语句",
        "type": "textarea",
        "default": null,
        "placeholder": "请输入执行语句",
        "required": true,
        "message": "请输入执行语句"
    },
];

const tableCriteria = [
    {
        "key": "namespace",
        "label": "命名空间",
        "type": "string",
        "default": null,
        "placeholder": "请输入命名空间"
    },
    {
        "key": "name",
        "label": "名称",
        "type": "string",
        "default": null,
        "placeholder": "请输入名称"
    },
    {
        "key": "type",
        "label": "类型",
        "type": "enum",
        "default": null,
        "placeholder": "请选择类型",
        "options": [
            {"value": "SQL", "label": "SQL"},
            {"value": "JAVA", "label": "JAVA"}
        ]
    },
];

export {tableColumns, createFormItems, updateFormItems, tableCriteria};
